home *** CD-ROM | disk | FTP | other *** search
/ Everything For A Hacker / 19990506-[HACK].iso / SECURE / CRYPT / GOST.ZIP / GAMME.ASM < prev    next >
Assembly Source File  |  1995-05-09  |  3KB  |  98 lines

  1. ;------------------------------------------------------
  2. ; âÑ¡Ñαᵿ∩ ¼áßß¿óá ¬α¿»Γ«úαáΣ¿τÑ߬«⌐ úá¼¼δ ß«ú½áß¡«
  3. ; ¬α¿»Γ«á½ú«α¿Γ¼π âÄæÆ 28147-89.
  4. ; Éáºαáí«Γá½ é¿¡«¬πα«ó Ç.₧., ú.î«ß¬óá, 1992-1995 ú.
  5. ; (C)1992-1995, æó«í«ñ¡«Ñ ¬«»¿α«óá¡¿Ñ ¿ ¿ß»«½∞º«óá¡¿Ñ.
  6. ;------------------------------------------------------
  7. ; Åáαá¼ÑΓαδ  »α¿  ó맮óÑ  »ÑαÑñáεΓß∩  ó  ßΓφ¬Ñ :
  8. ; æ¼ÑΘÑ¡¿Ñ ÉẼÑα    Å  Ç  É  Ç  î  à  Æ  É
  9. ;NEAR FAR
  10. ;  2   4      4     FAR-áñαÑß ¬½ετá
  11. ;  6   8      4     FAR-áñαÑß ß¿¡σα«»«ß佬¿ (S1,S2)
  12. ; 10  12      4     FAR-áñαÑß Γáí½¿µδ ºá¼Ñ¡
  13. ; 14  16      4     FAR-áñαÑß «í½áßΓ¿ ¡áº¡áτÑ¡¿∩
  14. ; 18  20      2     τ¿ß½« Φ¿ΣαπѼδσ í½«¬«ó
  15. ;------------------------------------------------------
  16. ; Åα¿ óδσ«ñÑ: áñαÑß  «í½áßΓ¿  ¡áº¡áτÑ¡¿∩  ¿  ñ½¿¡á
  17. ;             ß«ñÑαªáΓ ß¬«ααÑ¬Γ¿α«óá¡¡δÑ »áαá¼ÑΓαδ
  18. ;------------------------------------------------------
  19. ; çá¼Ñτá¡¿∩:
  20. ; 1. äá¡¡á∩ »α«µÑñπαá óδαáíáΓδóáÑΓ úá¼¼π  í½«¬á¼¿ »« 8
  21. ; íá⌐Γ«ó, τΓ« «ΓαáªáÑΓ ßó«⌐ßΓó« ¿ß»«½∞º«óá¡¡«ú« á½ú«-
  22. ; α¿Γ¼á íδΓ∞ í½«τ¡δ¼ Φ¿Σα«¼.
  23. ;------------------------------------------------------
  24. ; «»αÑñѽ∩Ѽ ¬«¡ßΓá¡Γδ C1,C2 »« âÄæÆ
  25. ;
  26. C1low    equ    0101h
  27. C1high    equ    0101h
  28. C2low    equ    0104h
  29. C2high    equ    0101h
  30. ;
  31.     .model  small,C
  32.     .code   $gost
  33.     extrn    gost:near
  34. gamme   proc
  35.     public  gamme
  36. ; óδτ¿ß½∩Ѽ ß¼ÑΘÑ¡¿Ñ »áαá¼ÑΓα«ó ó ßΓφ¬Ñ
  37.     a=8             ; 4 αÑú¿ßΓαá ó ßΓφ¬Ñ
  38. IF      (TYPE gamme) EQ 0FFFEh
  39.     a=a+2           ; Ñß½¿ gamma - far-»α«µÑñπαá
  40. ENDIF
  41. ; çáñáѼ  ß¼ÑΘÑ¡¿Ñ  áαúπ¼Ñ¡Γ«ó  ó  ßΓφ¬Ñ
  42. ;
  43. key=    2+a
  44. syn=    6+a
  45. chg=    10+a
  46. con=    14+a
  47. tar=    14+a
  48. len=    18+a
  49. ;
  50. ; æ«σαá¡Ñ¡¿Ñ αÑú¿ßΓα«ó ß«ú½áß¡« ß«ú½áΦÑ¡¿∩¼ Turbo C
  51.     push    BP
  52.     push    DS          ; φΓ« ¡πª¡« ¡Ñ óßÑúñá !
  53.     push    SI
  54.     push    DI
  55. ; ¡áßΓα«⌐¬á αÑú¿ßΓα«ó
  56.     mov     BP,SP       ; ßΓφ¬«óδ⌐ ¬áñα
  57.     lds     BX,chg[BP]  ; DS:BX <- áñαÑß Γáí½.ºá¼Ñ¡
  58. ; ä«íáó½Ñ¡¿Ñ  ¬«¡ßΓá¡Γ
  59. circle: les     SI,syn[BP]  ; áñαÑß    ß¿¡σα«»«»δ½¬¿
  60.     mov     AX,ES:[SI]  ; AX <- ¼½áñΦÑÑ ß½«ó« S1
  61.     mov     DX,ES:2[SI] ; DX <- ßΓáαΦÑÑ ß½«ó« S1
  62.     mov     DI,ES:4[SI] ; DI <- ¼½áñΦÑÑ ß½«ó« S2
  63.     mov     CX,ES:6[SI] ; CX <- ßΓáαΦÑÑ ß½«ó« S2
  64.     add     AX,C1low    ; ¿º¼Ñ¡Ñ¡¿Ñ S1:
  65.     adc     DX,C1high   ;    S1=(S1+C1) mod 2^32
  66.     adc     DI,C2low    ; ¿º¼Ñ¡Ñ¡¿Ñ S2:
  67.     adc     CX,C2high   ;  S2=(S2+C2) mod (2^32-1)
  68.     adc     DI,0        ; Ñß½¿ íδ½ »ÑαÑ¡«ß, ¡áñ«
  69.     adc     CX,0        ;  ñ«íáó¿Γ∞ 1 ¬ αѺπ½∞ΓáΓπ
  70.     mov     ES:[SI],AX  ; ºá¡«ß¿¼ ¡«óδÑ
  71.     mov     ES:2[SI],DX ;    º¡áτÑ¡¿∩ S1,S2
  72.     mov     ES:4[SI],DI ;       ¡á   ¿σ
  73.     mov     ES:6[SI],CX ;          ¼ÑßΓ« !!!
  74. ; â«Γ«ó¿¼ αÑú¿ßΓαδ ñ½∩ ó맮óá µ¿¬½á 32-ç;
  75.     les     SI,key[BP]  ; ES:SI <- áñαÑß ¬½ετá
  76.     mov     BP,CX       ; BP <- ßΓáαΦÑÑ  ß½«ó«  S2
  77.     mov     CX,32       ; CX <- τ¿ß½« «ß¡«ó¡. Φáú«ó
  78.     call    gost        ; Φáú  »α«ßΓ«⌐  ºá¼Ñ¡δ
  79.     mov     CX,BP       ; CX <- ßΓáαΦÑÑ  ß½«ó«  S2
  80.     mov     BP,SP       ; BP <- ßΓѬ«óδ⌐  ¬áñα
  81. ; êß»«½∞º«óá¡¿Ñ  ßúÑ¡Ñα¿α«óá¡¡«ú«  í½«¬á  úá¼¼δ
  82.     les     SI,tar[BP]  ; DS:SI<-áñαÑß  ¡áº¡áτÑ¡¿∩
  83.     mov     ES:[SI],DI  ; çá¡«ß¿¼  
  84.     mov     ES:2[SI],CX ;    8-íá⌐Γ¡δ⌐ í½«¬
  85.     mov     ES:4[SI],AX ;       úá¼¼δ ó «í½áßΓ∞
  86.     mov     ES:6[SI],DX ;          ¡áº¡áτÑ¡¿∩
  87.     add     word ptr tar[BP],8; ¬«ααѬµ¿∩ π¬áºáΓѽ∩
  88.     dec     word ptr len[BP]  ; ¬«ααѬµ¿∩ ßτÑΓτ¿¬á
  89.     jnz     circle      ; ¡á úÑ¡Ñαáµ¿ε ¡«ó«ú« í½«¬á
  90. ; é«ßßΓá¡«ó½Ñ¡¿Ñ αÑú¿ßΓα«ó ¿º ßΓφ¬á
  91.     pop     DI
  92.     pop     SI
  93.     pop     DS
  94.     pop     BP
  95.     ret
  96. gamme   endp
  97.     end
  98.